#ifndef ABSTRACTMAPINFOTAB_H
#define ABSTRACTMAPINFOTAB_H

#include <QWidget>
#include "dataspecification.h"

class MapInfoTab;

/**
 * @brief 图谱工厂接口
 * 负责创建不同类型的图谱信息展示界面
 */
class AbstractMapInfoTab : public QObject
{
    Q_OBJECT
public:
    virtual ~AbstractMapInfoTab() = default;
    
    /**
     * @brief 创建图谱信息展示界面
     * @param spectrum 图谱数据
     * @return 创建的图谱信息展示界面，如果不支持该图谱类型则返回nullptr
     */
    virtual MapInfoTab* createMapInfoTab(DataSpecificationGW::Spectrum* spectrum) = 0;
    
    /**
     * @brief 判断是否支持指定的图谱类型
     * @param spectrumTypeCode 图谱类型代码
     * @return 是否支持
     */
    virtual bool supportsSpectrumType(uint8_t spectrumTypeCode) const = 0;
};

#endif // ABSTRACTMAPINFOTAB_H
